package com.platform.common.web.sentinel;

import cn.hutool.core.util.StrUtil;
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;

/**
 * 创建sentinel来源解析器
 *
 * @author: yuanlai
 * @description 这个主要是辅助sentinel 收取功能，如果配置了服务授权的话，
 * 则会回调这个配置，获取调用方来源。这里的处理逻辑是从请求头获取调用方名称
 */
//@Component
public class RequestOriginParserDefinition
//        implements RequestOriginParser
{
    // 获取调用方标识信息并返回
//    @Override
//    public String parseOrigin(HttpServletRequest request) {
//        String serviceName = request.getHeader("serviceName");
//        String url = request.getRequestURL().toString();
//        if(url.endsWith("favicon.ico")
//                || url.endsWith("doc.html")
//                || url.endsWith("error")
//                || url.endsWith(".css")
//                || url.endsWith(".js")
//                || url.endsWith("/swagger-resources/configuration/ui")
//                || url.endsWith("/swagger-resources")){
//            // 浏览器会向后台请求favicon.ico图标
//            return serviceName;
//        }
//        if(StrUtil.isEmpty(serviceName)){
//            throw new IllegalArgumentException("serviceName must not be null");
//        }
//        return serviceName;
//    }
}